using Dew.Math;
using Dew.Math.Editors;
using Dew.Math.Units;
using Dew.Signal;
using Dew.Signal.Units;
using Dew.Math.Tee;
using Dew.Signal.Tee;
private void button1_Click(
object sender, EventArgs e)
{
Vector z =
new Vector(0);
Vector p =
new Vector(0);
Vector num =
new Vector(0);
Vector den =
new Vector(0);
Vector Response =
new Vector(0);
double k, Wc;
double FS = 2;
int Order = 4;
//design a fifth order filter.
IIRFilters.EllipticAnalog(Order,0.1,30, z, p,
out k);
//design analog protype
LinearSystems.Bilinear(z, p,
ref k, FS,
true);
Wc = 0.5;
LinearSystems.LowpassToHighpassZ(z, p,
ref k, Wc, LinearSystems.BilinearUnwarp(1,FS));
LinearSystems.ZeroPoleToTransferFun(num,den, z, p, k);
SignalUtils.FrequencyResponse(num, den, Response, 64,
false, TSignalWindowType.wtRectangular, 0);
//zero padding set to 64
//Alternative:
// ...
// LinearSystems.ZeroPoleToTransferFun(num,den, z, p, k);
// LinearSystems.LowpassToHighpassZ(num,den, Wc, LinearSystems.BilinearUnwarp(1,FS));
MtxVecTee.DrawIt(Response, "Frequency response",
false);
//MtxVecTee.DrawIt(20 * MtxExpr.Log10(MtxExpr.Abs(Response)), "Magnitude", false);
//MtxVecTee.DrawIt(MtxExpr.PhaseSpectrum(Response) * (180 / Math.PI), "Phase", false);
}